import axiosInstance from '@/../api/header.js';

// request
const request = class {
    constructor(url, data) {
        // 设置默认的请求头
        this.url = url;
        this.data = data;
    }
    doPost() {
        return new Promise((resolve, reject) => {
            axiosInstance.post(this.url, this.data)
                .then(response => {
                    resolve(response.data); // 返回响应数据，包装成Promise的成功响应
                })
                .catch(error => {
                    reject(error); // 返回错误信息，包装成Promise的失败响应
                });
        });
    }
    doGet() {
        // 使用 axiosInstance 发送 GET 请求
        // 这里的 this.url 是请求的地址，this.data 是请求的参数
        // 把this.data 作为查询参数附加到 URL 上
        if (this.data) {
            this.url += '?' + new URLSearchParams(this.data).toString();
        }
        // 返回一个 Promise 对象，表示异步操作的结果
        // 当请求成功时，resolve 返回响应数据
        // 当请求失败时，reject 返回错误信息
        // 这样可以在调用该方法的地方使用 then 和 catch 来处理成功和失败的情况
        // 例如：request.doGet().then(data => { ... }).catch(error => { ... });
        return new Promise((resolve, reject) => {
            axiosInstance.get(this.url)
                .then(response => {
                    resolve(response.data);
                })
                .catch(error => {
                    reject(error);
                });
        });
    }
}

export default request;
// 这样可以在 Vue 组件中通过 request 进行网络请求
